package com.wangxiaonan.wxwork.service;

import com.alibaba.fastjson.JSONObject;

/**
 * 部门管理
 *
 * @Author: wangxiaonan
 * @Date: 2018/11/29
 **/
public interface DepartmentService {

    String POST_DEPT_CREATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=%s";
    String POST_DEPT_UPDATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/update?access_token=%s";
    String GET_DEPT_DELETE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/delete?access_token=%s&id=%s";
    String GET_DEPT_GET_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=%s&id=%s";

    /**
     * 获取部门列表
     *
     * @param token 必须  调用接口凭证
     * @param id 选填 部门id。获取指定部门及其下的子部门。 如果不填，默认获取全量组织架构
     */
    JSONObject getDeptList(String token, String id);

    /**
     * @param token 必须 调用接口凭证
     * @param updateParam 必填 <br/>
     * name	是	部门名称。长度限制为1~32个字符，字符不能包括\:?”<>｜<br/>
     * parentid	是	父部门id，32位整型<br/>
     * order	否	在父部门中的次序值。order值大的排序靠前。有效的值范围是[0, 2^32)<br/>
     * id	否	部门id，32位整型，指定时必须大于1。若不填该参数，将自动生成id<br/>
     */
    JSONObject createDept(String token, JSONObject updateParam);

    /**
     * @param token 必须 调用接口凭证
     * @param updateParam 必填 <br/>
     * id	是	部门id<br/>
     * name	否	部门名称。长度限制为1~32个字符，字符不能包括\:?”<>｜<br/>
     * parentid	否	父部门id<br/>
     * order	否	在父部门中的次序值。order值大的排序靠前。有效的值范围是[0, 2^32)<br/>
     */
    JSONObject updateDept(String token, JSONObject updateParam);

    /**
     * 删除部门
     *
     * @param token 必须 调用接口凭证
     * @param id 选填 部门id。（注：不能删除根部门；不能删除含有子部门、成员的部门）
     */
    JSONObject deleteDept(String token, String id);

}
